package xyccontroller

import (
	"Cgo/common"
	"Cgo/front/models"
	"strconv"

	"github.com/gin-gonic/gin"
)

func XycCartController(r *gin.RouterGroup) {
	r.POST("/addCart", common.HandlerFunc(addCart))
	r.GET("/findCartByUserId", common.HandlerFunc(findCartByUserId))
	r.DELETE("/deleteCart", common.HandlerFunc(deleteCart))
	r.PUT("/updateCart", common.HandlerFunc(updateCart))
}

// 添加购物车
// @Summary 添加购物车
// @description 添加购物车
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param cart body models.XycCart true "购物车信息"
// @Success 200 {object} common.RT[string]
// @Router /front/xyc/cart/addCart [post]
func addCart(c *gin.Context) common.Result {
	var cart models.XycCart
	err := c.ShouldBindJSON(&cart)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	err = CartDao.AddCartDao(cart)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("添加成功")
}

// 根据userId查询购物车列表
// @Summary 获取购物车列表
// @description 根据userId查询购物车列表
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param userId query int true "用户id"
// @Success 200 {object} common.RT[[]models.XycCart]
// @Router /front/xyc/cart/findCartByUserId [get]
func findCartByUserId(c *gin.Context) common.Result {
	userIdStr := c.Query("userId")
	userId, _ := strconv.Atoi(userIdStr)
	carts, err := CartDao.FindCartByUserIdDao(userId)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success(carts)
}

// 删除购物车
// @Summary 删除购物车
// @description 删除购物车
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param id query int true "购物车id"
// @Success 200 {object} common.RT[string]
// @Router /front/xyc/cart/deleteCart [delete]
func deleteCart(c *gin.Context) common.Result {
	idStr := c.Query("id")
	id, _ := strconv.Atoi(idStr)
	err := CartDao.DeleteCartByIdDao(id)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("删除成功")
}

// 修改购物车
// @Summary 修改购物车
// @description 修改购物车
// @Tags xyc_shop前台接口
// @Accept json
// @Produce json
// @Param cart body models.XycCart true "购物车信息"
// @Success 200 {object} common.RT[string]
// @Router /front/xyc/cart/updateCart [put]
func updateCart(c *gin.Context) common.Result {
	var cart models.XycCart
	err := c.ShouldBindJSON(&cart)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	err = CartDao.UpdateCartDao(cart)
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("修改成功")
}
